package com.dongdongshop_util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.net.URL;
import java.util.Date;

public class OSSutils {

    private static Logger logger = LoggerFactory.getLogger(OSSutils.class);

    public static String upload(MultipartFile image) throws IOException {
        // Endpoint以杭州为例，其它Region请按实际情况填写。
        String endpoint = "http://oss-cn-beijing.aliyuncs.com";
        // 云账号AccessKey有所有API访问权限，建议遵循阿里云安全最佳实践，创建并使用RAM子账号进行API访问或日常运维，
        // 请登录 https://ram.console.aliyun.com 创建。
        String accessKeyId = "LTAI4G64FQi4fg7X94gJnCS8";
        String accessKeySecret = "JW6adh0hkOWgERxATyjaILbt2Oc3UD";

        String bucketName = "dongke-1904";
        String fileName = image.getOriginalFilename();
        logger.info("上传文件名为 : [[{}]]", fileName);
        //获取文件后缀名
        /*String suffixName = fileName.substring(fileName.lastIndexOf("."));*/
        //生成上传文件名
        String imgageName = new Date().getTime() + "/" + fileName;
        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        if (ossClient.doesBucketExist(bucketName)) {
            logger.info("您已经创建Bucket：[[{}]]", bucketName);
        } else {
            logger.info("您的Bucket不存在，创建Bucket：[[{}]]。", bucketName);
            //创建
            ossClient.createBucket(bucketName);
        }

        // 上传文件流,,上传到oss。
        //第一个参数bucket名字，第二个上传的文件名，第三个文件的输入流
        ossClient.putObject(bucketName, imgageName, image.getInputStream());
        //去阿里云上查询文件，需要访问buckeName，还需要文件名，第三个参数：文件访问的有效时间,从当前毫秒值开始计算
        Date date = new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24 * 365);
        URL url = ossClient.generatePresignedUrl(bucketName, imgageName, date);
        // 关闭OSSClient。
        ossClient.shutdown();
        String urlString = url.toString();
        logger.info("上传后图片访问路径 : {}", urlString);
        return urlString;
    }
}
